//d导入所需配置
var express = require('express');
var router = express.Router();
const UserModels = require('../../models/UserModels')
const {secret} = require('../../config/config')
const bcrypt = require('bcryptjs')
const jwt = require('jsonwebtoken');
const MailModels = require('../../models/mailModels')

//注册API
router.post('/reg', async (req, res, next) => {
  //检查用户是否存在
  const existingUser = await UserModels.findOne({ username: req.body.username });
  if (existingUser) {
    // 如果用户名已存在，则返回错误信息
    return res.json({
      code: '1002',
      msg: '用户名已存在',
      data: null
    });
  }
  if(req.body.password !== req.body.rspassword) {
    return res.json({
      code: '1001',
      msg: '密码不一致',
      data: null
    })
    
  }
  const veri = await MailModels.find({verification:req.body.verification})
  console.log(veri)
  if(veri.length === 0) {
      return res.json({
        code: '1006',
        msg: '验证码不一致或已过期',
        data: null
      })
  }
  //密码哈希处理
  const hashedPassword = await bcrypt.hash(req.body.password, 10)
  try {
    const newUser = await UserModels.create({ username: req.body.username, password: hashedPassword });
    res.json({
      code: '0000',
      msg: '创建成功',
      data: newUser
    });
  } catch (error) {
    // 处理创建用户时可能出现的其他错误
    res.json({
      code: '500',
      msg: '创建用户失败，请稍后再试',
      data: null
    });
  }
});
 
//登录API
router.post('/login', async (req,res, next) => {
  try {
    // 先根据用户名查找用户
    let findUser = await UserModels.findOne({ username: req.body.username });
    // 如果找到了用户，再比较密码
    if (findUser) {
      //对比明文密码和经过bcrypt算法加密后的哈希密码是否匹配
      const isMatch = await bcrypt.compare(req.body.password, findUser.password);
      if (isMatch) {
        // 密码匹配成功，可以进行登录操作，比如生成token等
        let token = jwt.sign({
          username: findUser.username,
          _id: findUser._id
        }, secret, {
          expiresIn: 60 * 60 * 24 * 7   //token7天后过期
        });
        res.json({
          code: '0000',
          msg: '登录成功',
          token
        })
        
        // 这里添加登录成功的处理逻辑
      } else {
        // 密码不匹配
        res.json({
          code: '1003',
          msg: '密码错误',
          data: null
        })
      }
    } else {
      // 用户名不存在
      res.json({
        code: '1004',
        msg: '用户不存在', 
        data: null
      })
    }
  } catch (error) {
    // 处理任何可能的异常
    console.error(error);
    next(error);
  }
})


module.exports = router;
